<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

<script>
// 逻辑运算符
// &&逻辑与  ||逻辑或  !逻辑非
// 逻辑运算符返回布尔值

// &&逻辑与,要求&&前后都为true时,结果返回true
// console.log( 5>3 && 5<10 );// true
// console.log( 5>3 && 5>10 );// false
// console.log( 5<3 && 5<10 );// false
// console.log( 5<3 && 5>10 );// false

// ||逻辑或,只要||前后有一个及以上为true,结果返回true
// console.log( 5>3 || 5>10 );// true
// console.log( 5>3 || 5<10 );// true
// console.log( 5<3 || 5>10 );// false

// !逻辑非,将一个值转成布尔值并取反
// console.log( !true );// false
// console.log( !false );// true


// 逻辑运算符的短路操作:

/* // 逻辑与用于赋值时,第一个表达式为true时,返回&&后面的值
var a = 3<5 && 4;
console.log( a );// false 4

// 逻辑与用于赋值时,第一个表达式为false时,返回&&前面的值
var b = 0 && 3;
console.log( b );// 0 */

// 第一个表达式为true时,才会执行后面的表达式
// var num1 = 0;
// 4<2 && (num1=2);
// console.log( num1 );// 0

// var num2 = 0;
// 4>2 || (num2=2);
// console.log( num2 );// 0

// var num3 = 0 || 2;
// console.log( num3 );// 2

console.log( !1 );// false
console.log( !!1 );// true
console.log( Boolean(1) );// true

</script>
</body>
</html>